聚合

1> 在整个 DataFrame 上应用聚合

df = pd.DataFrame(np.random.randn(3,4), index = pd.date_range('1/1/2019', periods = 3),columns = ["A","B","C","D"])
rl_df = df.rolling(window = 3, min_periods = 1)
print(f'初始数组:\n{df}')

# 输出结果:
#  初始数组:
#                     A         B         C         D
#  2019-01-01  1.585409  1.580973  1.049601  0.859623
#  2019-01-02 -0.396824  0.511168  1.085146  0.391574
#  2019-01-03 -0.059131  0.954592  0.033772 -0.620811
print(f'聚合结果:\n{rl_df.aggregate(np.sum)}')

# 输出结果:
#  聚合结果:
#                     A         B         C         D
#  2019-01-01  1.585409  1.580973  1.049601  0.859623
#  2019-01-02  1.188585  2.092141  2.134748  1.251197
#  2019-01-03  1.129454  3.046733  2.168519  0.630386

2> 在 DataFrame 的单列上应用聚合

df = pd.DataFrame(np.random.randn(3,4), index = pd.date_range('1/1/2019', periods = 3),columns = ["A","B","C","D"])
rl_df = df.rolling(window = 3, min_periods = 1)
print(f'初始数组:\n{df}')

# 输出结果:
#  初始数组:
#                     A         B         C         D
#  2019-01-01  1.657646 -0.067874 -1.529391  0.368396
#  2019-01-02 -1.023714 -0.562762 -0.965303 -0.493400
#  2019-01-03 -0.206236 -0.026148  1.057269  0.004974

print(f'聚合结果:\n{rl_df["A"].aggregate(np.sum)}')

# 输出结果:
#  聚合结果:
#  2019-01-01    1.657646
#  2019-01-02    0.633932
#  2019-01-03    0.427696
#  Freq: D, Name: A, dtype: float64

3> 在 DataFrame 的多列上应用聚合

df = pd.DataFrame(np.random.randn(3,4), index = pd.date_range('1/1/2019', periods = 3),columns = ["A","B","C","D"])
rl_df = df.rolling(window = 3, min_periods = 1)
print(f'初始数组:\n{df}')

# 输出结果:
#  初始数组:
#                     A         B         C         D
#  2019-01-01 -1.356916 -1.901553 -1.051033 -0.262420
#  2019-01-02 -0.232712 -1.326082  0.764393  0.675415
#  2019-01-03  0.170601  1.210256  1.065309  1.775079

print(f'聚合结果:\n{rl_df["A","C"].aggregate(np.sum)}')

# 输出结果:
#  聚合结果:
#                     A         C
#  2019-01-01 -1.356916 -1.051033
#  2019-01-02 -1.589628 -0.286640
#  2019-01-03 -1.419027  0.778668

4> 在 DataFrame 的单列上应用多个函数

df = pd.DataFrame(np.random.randn(3,4), index = pd.date_range('1/1/2019', periods = 3),columns = ["A","B","C","D"])
rl_df = df.rolling(window = 3, min_periods = 1)
print(f'初始数组:\n{df}')

# 输出结果:
#  初始数组:
#                     A         B         C         D
#  2019-01-01  0.093778  0.563609 -0.070347  0.472764
#  2019-01-02  0.712117 -0.196268 -0.183463  1.627497
#  2019-01-03  0.294265  1.155061  0.460007  1.361021

print(f'聚合结果:\n{rl_df["A"].aggregate([np.sum,np.mean])}')

# 输出结果:
#  聚合结果:
#                   sum      mean
#  2019-01-01  0.093778  0.093778
#  2019-01-02  0.805895  0.402947
#  2019-01-03  1.100160  0.366720

print(f'初识数组聚合结果:\n{df["A"].aggregate([np.sum,np.mean])}')

# 输出结果:
#  初识数组聚合结果:
#  sum     1.10016
#  mean    0.36672
#  Name: A, dtype: float64

5> 在 DataFrame 的多列上应用多个函数

df = pd.DataFrame(np.random.randn(3,4), index = pd.date_range('1/1/2019', periods = 3),columns = ["A","B","C","D"])
rl_df = df.rolling(window = 3, min_periods = 1)
print(f'初始数组:\n{df}')

# 输出结果:
#  初始数组:
#                     A         B         C         D
#  2019-01-01 -0.326311  1.303446 -0.388956 -0.554591
#  2019-01-02 -1.148068  1.637101 -0.684822  0.603743
#  2019-01-03  0.913430  0.327187 -1.268619 -1.254668

print(f'聚合结果:\n{rl_df[["A","B"]].aggregate([np.sum,np.mean])}')

# 输出结果:
#  聚合结果:
#                     A                   B          
#                   sum      mean       sum      mean
#  2019-01-01 -0.326311 -0.326311  1.303446  1.303446
#  2019-01-02 -1.474379 -0.737189  2.940547  1.470273
#  2019-01-03 -0.560949 -0.186983  3.267734  1.089245

6> 将不同函数应用于 DataFrame 的不同列

df = pd.DataFrame(np.random.randn(3,4), index = pd.date_range('1/1/2019', periods = 3),columns = ["A","B","C","D"])
rl_df = df.rolling(window = 3, min_periods = 1)
print(f'初始数组:\n{df}')

# 输出结果:
#  初始数组:
#                     A         B         C         D
#  2019-01-01 -0.825357  1.625349 -0.866792  0.516320
#  2019-01-02  0.078847  1.223719 -1.860850 -0.761799
#  2019-01-03 -1.622735 -1.373171  0.496337  0.946703

print(f'聚合结果:\n{rl_df.aggregate({"A":np.sum,"B":np.mean})}')

# 输出结果:
#  聚合结果:
#                     A         B
#  2019-01-01 -0.825357  1.625349
#  2019-01-02 -0.746509  1.424534
#  2019-01-03 -2.369244  0.491965